home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!elroy.jpl.nasa.gov!usc!apple!veritas!amdcad!sun!exodus!hillside.co.uk
- From: pc@hillside.co.uk (Peter Collinson)
- Newsgroups: comp.sources.x
- Subject: v12i081: xcal3.2, Patch1, Part01/01
- Message-ID: <12926@exodus.Eng.Sun.COM>
- Date: 7 May 91 05:12:33 GMT
- References: <csx-12i081:xcal@uunet.UU.NET>
- Sender: news@exodus.Eng.Sun.COM
- Lines: 2976
- Approved: argv@sun.com
-
- Submitted-by: Peter Collinson <pc@hillside.co.uk>
- Posting-number: Volume 12, Issue 81
- Archive-name: xcal/patch1
- Patch-To: xcal: Volume 10, Issue 99-101
-
- --------
- Xcal is a calendar program. It generally sits on your screen
- displaying today's date - the format of this can be tailored to your
- taste.
-
- The diffs below should only by applied to xcal 3.2 posted to the net
- as comp.sources.x, Volume 10 Issue 99-101. If you are unsure of the
- version, check the file version.c - this should contain the full truth.
-
- Oh yes, what are the changes? These are documented in the CHANGES file
- (see below) - now more detailed because of someone's complaints.
-
- I did this all in January and had hoped to add a number of more
- things to xcal and have a formidable mail folder full of fixes,
- suggestions and ideas. I do want to do something when the date strip
- gets too big for the screen, this is probably the biggest complaint.
-
- I will eventually get around to dealing with fixes and new ideas. This
- patch set is being produced mostly because a number of people have
- asked for a way of dealing with regular events. Xcal purists will find
- that the basic date box now contains todays day as a string. The box
- grows alarmingly. You can mimic previous behaviour by using resources.
- Personally, I like it.
-
- Thanks to the many people who have mailed to say thanks and added
- ideas to xcal. Sorry to the people who I refused to listen to or whose
- ideas I haven't used.
-
-
- Patch-To: xcal: Volume 10, Issue 99-101
-
- ------------------------- patch from here --------------
- Prereq: 0
- *** patchlevel.h~ Fri Mar 22 23:34:53 1991
- --- patchlevel.h Fri Mar 22 23:48:23 1991
- ***************
- *** 1 ****
- ! #define PATCHLEVEL 0
- --- 1 ----
- ! #define PATCHLEVEL 1
- *** CHANGES~ Fri Mar 22 23:34:58 1991
- --- CHANGES Fri Mar 22 23:48:26 1991
- ***************
- *** 1,6 ****
- ! Changes: CHANGES 2.2 12/5/90
-
- ! Xcal - Version 3.1 Issued to comp.sources.x
-
- Adds the memo functionality and the Stick/Unpin feature
- for alarms.
- --- 1,69 ----
- ! Changes: CHANGES 2.12 91/03/22
-
- ! --------------------------- 3.3
- !
- ! Implement the ability to deal with regular weekly events.
- ! This is part of the memo system. Today's current events are
- ! shown as part of the memo panel. They can be edited by hitting
- ! a button and bringing up a special strip with an entry for
- ! each day. These regular event files are integrated into
- ! the alarm system.
- !
- ! Allow today's name: Monday, Tuesday etc to appear in the top
- ! level widget, the header of an edit window and the title of
- ! the memo box. This is controlled by the Order and Format
- ! resources and so previous behaviour can be maintained. Beware
- ! that this redefines the names of the days so
- ! Sunday maps to Sunday
- ! and a new short name is used for the abbreviated form
- ! Sun maps to Sun
- ! used in date strips.
- !
- ! Ensure that middle and right button translations work in the
- ! memo button in the top level widget (suggested by Casey
- ! Leedom).
- !
- ! New Imakefile from Casey Leedom. This has support for pscal.
- ! New pscal/Imakefile.
- !
- ! Add initialMemo resource so the memo box can popup at startup
- ! time - (suggested by G. W. Pigman III)
- !
- ! Steven Plite pointed out that the year display is
- ! inconsistent. To allow choice, add three new resources:
- ! dateYearIsTwoDigits
- ! memoYearIsTwoDigits
- ! editYearIsTwoDigits
- ! You can now choose how you would like to have your year
- ! displayed in the various places.
- ! Defaults to showing four digits.
- !
- ! System V release 4 fixes from Dave McCraken.
- ! Alters: xcal_alarm.c, xcal_cal.c, *.bm xcal.c
- !
- ! The memo box quit button causes a Save File
- ! dialogue box to be popped if the memo data has been
- ! altered and not saved. The behaviour of this was wrong
- ! when there was no memo data. Reported by Greg Bond.
- ! Fixed by changing tests in xcal_memo.c.
- !
- ! Proper length of a directory entry under SYSV is
- ! strlen(dp->d_name) not strlen(dp->d_name)+1.
- ! Changed xcal_edit.c (Dave McCraken)
- !
- ! Eliminated double definition of GetMemoFile() and incorrect
- ! definition of MemoHelp() in xcal_memo.c (David C Lawrence)
- !
- ! --------------------------- 3.2
- !
- ! Xcal - Version 3.2 Issued to comp.sources.x
- !
- ! Fixes some stupid bugs
- ! Ensures that update code works properly
- !
- ! ---------------------------- 3.1
- !
- ! Xcal - Version 3.1 Issued to comp.sources.x (un-intentionally)
-
- Adds the memo functionality and the Stick/Unpin feature
- for alarms.
- *** README~ Fri Mar 22 23:34:53 1991
- --- README Fri Mar 22 23:48:23 1991
- ***************
- *** 26,37 ****
- program. So you can generate pretty printed calendars whenever you
- like - assuming that you have a PostScript printer.
-
- ! This is release 3.2.
- The history is:
- Release 1.1 posted to comp.sources.x
- + two patches
- Release 2.1 circulated privately
- ! Release 3.1 circulated privately
-
- Caveats
-
- --- 26,38 ----
- program. So you can generate pretty printed calendars whenever you
- like - assuming that you have a PostScript printer.
-
- ! This is release 3.3
- The history is:
- Release 1.1 posted to comp.sources.x
- + two patches
- Release 2.1 circulated privately
- ! Release 3.1 posted unintentionally to comp.sources.x
- ! Release 3.2 posted to comp.sources.x
-
- Caveats
-
- ***************
- *** 48,54 ****
- Fax: +44 227 762554
- Email: pc@hillside.co.uk
-
- ! 18/December/1990
-
- Fixes/enhancements welcomed....
-
- --- 49,55 ----
- Fax: +44 227 762554
- Email: pc@hillside.co.uk
-
- ! 22/March/1990
-
- Fixes/enhancements welcomed....
-
- *** Imakefile~ Fri Mar 22 23:34:48 1991
- --- Imakefile Fri Mar 22 23:48:20 1991
- ***************
- *** 1,22 ****
- ! LOCAL_LIBRARIES = XawClientLibs
- ! INCS = xcal.h
- ! SRCS = xcal.c xcal_alarm.c xcal_edit.c xcal_help.c xcal_popup.c xcal_strip.c xcal_memo.c version.c
- ! OBJS = xcal.o xcal_alarm.o xcal_edit.o xcal_help.o xcal_popup.o xcal_strip.o xcal_memo.o version.o
- OSMAJORVERSION = OSMajorVersion
- OSMINORVERSION = OSMinorVersion
- ! DEFINES = -DOSMAJORVERSION=$(OSMAJORVERSION) -DOSMINORVERSION=$(OSMINORVERSION) -DVER_VEC
-
-
- ! AllTarget(xcal)
- ! NormalProgramTarget(xcal,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES), /**/)
-
- ! AllTarget(xcal_cal)
- ! NormalProgramTarget(xcal_cal, xcal_cal.o,/**/,/**/,/**/);
-
- ! InstallProgram(xcal, $(BINDIR))
- ! InstallManPage(xcal, $(MANDIR))
- ! InstallProgram(xcal_cal, $(BINDIR))
- ! InstallManPage(xcal_cal, $(MANDIR))
- InstallAppDefaults(XCal)
-
- ! DependTarget()
- --- 1,35 ----
- ! /*
- ! * Define InstallPsCal if you want to have pscal compiled and installed as
- ! * part of the xcal compilation and installation.
- ! */
- ! /* #define InstallPsCal */
- !
- OSMAJORVERSION = OSMajorVersion
- OSMINORVERSION = OSMinorVersion
- ! DEFINES = -DOSMAJORVERSION=$(OSMAJORVERSION) \
- ! -DOSMINORVERSION=$(OSMINORVERSION) \
- ! -DVER_VEC
-
- + SRCS1 = xcal.c xcal_alarm.c xcal_edit.c xcal_help.c xcal_popup.c \
- + xcal_strip.c xcal_memo.c version.c
- + OBJS1 = xcal.o xcal_alarm.o xcal_edit.o xcal_help.o xcal_popup.o \
- + xcal_strip.o xcal_memo.o version.o
-
- ! SRCS2 = xcal_cal.c
- ! OBJS2 = xcal_cal.o
-
- ! PROGRAMS = xcal xcal_cal
-
- ! ComplexProgramTarget_1(xcal, XawClientLibs, /**/)
- ! ComplexProgramTarget_2(xcal_cal, /**/, /**/)
- InstallAppDefaults(XCal)
-
- ! #ifdef InstallPsCal
- ! #define IHaveSubdirs
- ! #define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'
- !
- ! SUBDIRS = pscal
- !
- ! MakeSubdirs($(SUBDIRS))
- ! DependSubdirs($(SUBDIRS))
- ! #endif
- *** Makefile~ Fri Mar 22 23:34:55 1991
- --- Makefile Fri Mar 22 23:48:24 1991
- ***************
- *** 225,273 ****
- ###########################################################################
- # start of Imakefile
-
- - LOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
- - INCS = xcal.h
- - SRCS = xcal.c xcal_alarm.c xcal_edit.c xcal_help.c xcal_popup.c xcal_strip.c xcal_memo.c version.c
- - OBJS = xcal.o xcal_alarm.o xcal_edit.o xcal_help.o xcal_popup.o xcal_strip.o xcal_memo.o version.o
- OSMAJORVERSION = 4
- OSMINORVERSION = 1
- ! DEFINES = -DOSMAJORVERSION=$(OSMAJORVERSION) -DOSMINORVERSION=$(OSMINORVERSION) -DVER_VEC
-
- ! all:: xcal
-
- ! xcal: $(OBJS) $(DEPLIBS)
- ! $(RM) $@
- ! $(CC) -o $@ $(OBJS) $(LDOPTIONS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
-
- ! clean::
- ! $(RM) xcal
-
- ! all:: xcal_cal
-
- ! xcal_cal: xcal_cal.o
- $(RM) $@
- ! $(CC) -o $@ xcal_cal.o $(LDOPTIONS) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
-
- - clean::
- - $(RM) xcal_cal;
- -
- install:: xcal
- ! $(INSTALL) -c $(INSTPGMFLAGS) xcal $(BINDIR)
-
- install.man:: xcal.man
- ! $(INSTALL) -c $(INSTMANFLAGS) xcal.man $(MANDIR)/xcal.n
-
- install:: xcal_cal
- ! $(INSTALL) -c $(INSTPGMFLAGS) xcal_cal $(BINDIR)
-
- install.man:: xcal_cal.man
- ! $(INSTALL) -c $(INSTMANFLAGS) xcal_cal.man $(MANDIR)/xcal_cal.n
-
- install:: XCal.ad
- $(INSTALL) -c $(INSTAPPFLAGS) XCal.ad $(XAPPLOADDIR)/XCal
- -
- - depend::
- - $(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
-
- ###########################################################################
- # common rules for all Makefiles - do not edit
- --- 225,284 ----
- ###########################################################################
- # start of Imakefile
-
- OSMAJORVERSION = 4
- OSMINORVERSION = 1
- ! DEFINES = -DOSMAJORVERSION=$(OSMAJORVERSION) \
- ! -DOSMINORVERSION=$(OSMINORVERSION) \
- ! -DVER_VEC
-
- ! SRCS1 = xcal.c xcal_alarm.c xcal_edit.c xcal_help.c xcal_popup.c \
- ! xcal_strip.c xcal_memo.c version.c
- ! OBJS1 = xcal.o xcal_alarm.o xcal_edit.o xcal_help.o xcal_popup.o \
- ! xcal_strip.o xcal_memo.o version.o
-
- ! SRCS2 = xcal_cal.c
- ! OBJS2 = xcal_cal.o
-
- ! PROGRAMS = xcal xcal_cal
-
- ! OBJS = $(OBJS1) $(OBJS2) $(OBJS3)
- ! SRCS = $(SRCS1) $(SRCS2) $(SRCS3)
-
- ! all:: $(PROGRAMS)
- !
- ! xcal: $(OBJS1) $(DEPLIBS1)
- $(RM) $@
- ! $(CC) -o $@ $(LDOPTIONS) $(OBJS1) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
-
- install:: xcal
- ! $(INSTALL) -c $(INSTPGMFLAGS) xcal $(BINDIR)
-
- install.man:: xcal.man
- ! $(INSTALL) -c $(INSTMANFLAGS) xcal.man $(MANDIR)/xcal.n
-
- + depend::
- + $(DEPEND) -s "# DO NOT DELETE" -- $(ALLDEFINES) -- $(SRCS)
- +
- + lint:
- + $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS)
- + lint1:
- + $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS)
- +
- + clean::
- + $(RM) $(PROGRAMS)
- +
- + xcal_cal: $(OBJS2) $(DEPLIBS2)
- + $(RM) $@
- + $(CC) -o $@ $(LDOPTIONS) $(OBJS2) $(LDLIBS) $(EXTRA_LOAD_FLAGS)
- +
- install:: xcal_cal
- ! $(INSTALL) -c $(INSTPGMFLAGS) xcal_cal $(BINDIR)
-
- install.man:: xcal_cal.man
- ! $(INSTALL) -c $(INSTMANFLAGS) xcal_cal.man $(MANDIR)/xcal_cal.n
-
- install:: XCal.ad
- $(INSTALL) -c $(INSTAPPFLAGS) XCal.ad $(XAPPLOADDIR)/XCal
-
- ###########################################################################
- # common rules for all Makefiles - do not edit
- *** XCal.ad~ Fri Mar 22 23:34:51 1991
- --- XCal.ad Fri Mar 22 23:48:21 1991
- ***************
- *** 1,8 ****
- XCal.MarkForeground: Black
- XCal.MarkBackground: White
- ! XCal.edit.geometry: 300x150
- ! XCal.memo.geometry: 300x300
- ! XCal.alarm.geometry: 300x100+0+150
- XCal*help.geometry: 600x300
- XCal.fontToday: lucidasanstypewriter-12
- XCal*Font: lucidasanstypewriter-12
- --- 1,8 ----
- XCal.MarkForeground: Black
- XCal.MarkBackground: White
- ! XCal.edit.geometry: 325x150
- ! XCal.memo.geometry: 325x300
- ! XCal.alarm.geometry: 325x100+0+150
- XCal*help.geometry: 600x300
- XCal.fontToday: lucidasanstypewriter-12
- XCal*Font: lucidasanstypewriter-12
- ***************
- *** 40,45 ****
- --- 40,48 ----
- XCal*alarmQuit.Label: Unpin
- XCal*alarmHold.Label: Stick
- XCal*memoTitle.Label: Edit the memo file
- + XCal*weeklyEdit.Label: Edit
- + XCal*weeklyTitle.Label: Today's regular events
- +
- !
- ! Colours from reed wade@cs.utk.edu
- !
- *** mouse.bm~ Fri Mar 22 23:34:58 1991
- --- mouse.bm Fri Mar 22 23:48:26 1991
- ***************
- *** 1,6 ****
- #define mouse_width 16
- #define mouse_height 13
- ! static char mouse_bits[] = {
- 0xfe, 0x7f, 0xff, 0xff, 0x21, 0x84, 0xa1, 0xb5, 0xa1, 0xb5, 0xa1, 0xb5,
- 0xa1, 0xb5, 0xa1, 0xb5, 0xa1, 0xb5, 0x21, 0x84, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff};
- --- 1,6 ----
- #define mouse_width 16
- #define mouse_height 13
- ! static unsigned char mouse_bits[] = {
- 0xfe, 0x7f, 0xff, 0xff, 0x21, 0x84, 0xa1, 0xb5, 0xa1, 0xb5, 0xa1, 0xb5,
- 0xa1, 0xb5, 0xa1, 0xb5, 0xa1, 0xb5, 0x21, 0x84, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff};
- *** mouseaway.bm~ Fri Mar 22 23:34:58 1991
- --- mouseaway.bm Fri Mar 22 23:48:26 1991
- ***************
- *** 1,6 ****
- #define mouseaway_width 16
- #define mouseaway_height 13
- ! static char mouseaway_bits[] = {
- 0xfe, 0x7f, 0xff, 0xff, 0x21, 0x84, 0xad, 0xb5, 0xad, 0xb5, 0xad, 0xb5,
- 0xad, 0xb5, 0xad, 0xb5, 0xad, 0xb5, 0x21, 0x84, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff};
- --- 1,6 ----
- #define mouseaway_width 16
- #define mouseaway_height 13
- ! static unsigned char mouseaway_bits[] = {
- 0xfe, 0x7f, 0xff, 0xff, 0x21, 0x84, 0xad, 0xb5, 0xad, 0xb5, 0xad, 0xb5,
- 0xad, 0xb5, 0xad, 0xb5, 0xad, 0xb5, 0x21, 0x84, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff};
- *** version.c~ Fri Mar 22 23:34:48 1991
- --- version.c Fri Mar 22 23:48:20 1991
- ***************
- *** 1,10 ****
- #ifndef lint
- ! static char *sccsid = "@(#)version.c 3.2 (Hillside Systems) 12/18/90";
- #endif /* lint */
- /*
- * Version control file
- ! * version.c 3.2 12/18/90
- ! * Automatically created on Tue Dec 18 21:15:55 GMT 1990
- *
- * Hand edit none of this if you want freeze to continue to work
- */
- --- 1,10 ----
- #ifndef lint
- ! static char *sccsid = "@(#)version.c 3.3 (Hillside Systems) 3/22/91";
- #endif /* lint */
- /*
- * Version control file
- ! * version.c 3.3 3/22/91
- ! * Automatically created on Fri Mar 22 23:48:16 GMT 1991
- *
- * Hand edit none of this if you want freeze to continue to work
- */
- ***************
- *** 12,43 ****
- #define PROGNAME XCal
- #endif
- #ifdef VER_VEC
- ! char version[] = "XCal Version 3.2, released Tue Dec 18 21:15:55 GMT 1990";
- #endif
- #ifdef VER_DEF
- ! #define VERSION "XCal Version 3.2, released Tue Dec 18 21:15:55 GMT 1990"
- #endif
-
- /* SCCS files
- *
- ! +1.7 Imakefile
- ! +3.5 xcal_help.c
- ! +1.4 xcal_cal.c
- ! +1.12 xcal.man
- ! +1.5 xcal_memo.c
- ! +1.10 XCal.ad
- ! +1.10 xcal_alarm.c
- ! +3.9 xcal_edit.c
- ! +1.4 README
- ! +2.1 patchlevel.h
- ! +3.6 xcal_strip.c
- +1.2 xcal_cal.man
- ! +1.8 Makefile
- ! +3.4 xcal_popup.c
- ! +3.13 xcal.c
- ! +3.8 xcal.h
- ! +2.2 CHANGES
- ! +1.1 mouse.bm
- ! +1.1 mouseaway.bm
- *
- */
- --- 12,43 ----
- #define PROGNAME XCal
- #endif
- #ifdef VER_VEC
- ! char version[] = "XCal Version 3.3, released Fri Mar 22 23:48:16 GMT 1991";
- #endif
- #ifdef VER_DEF
- ! #define VERSION "XCal Version 3.3, released Fri Mar 22 23:48:16 GMT 1991"
- #endif
-
- /* SCCS files
- *
- ! +1.9 Imakefile
- ! +3.6 xcal_help.c
- ! +1.6 xcal_cal.c
- ! +1.17 xcal.man
- ! +1.11 xcal_memo.c
- ! +1.13 XCal.ad
- ! +1.13 xcal_alarm.c
- ! +3.15 xcal_edit.c
- ! +1.6 README
- ! +2.2 patchlevel.h
- ! +3.10 xcal_strip.c
- +1.2 xcal_cal.man
- ! +1.10 Makefile
- ! +3.5 xcal_popup.c
- ! +3.22 xcal.c
- ! +3.14 xcal.h
- ! +2.12 CHANGES
- ! +1.2 mouse.bm
- ! +1.2 mouseaway.bm
- *
- */
- *** xcal.c~ Fri Mar 22 23:34:56 1991
- --- xcal.c Fri Mar 22 23:48:25 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal.c 3.13 (Hillside Systems) 12/7/90";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal.c 3.22 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- ***************
- *** 13,18 ****
- --- 13,19 ----
- -format str use str as a display format
- -order ord set the argument order to this
- -debug run quickly incrementing time - 1 day per sec
- + -alarmscan print alarm debug info
- * libraries used:
- libXaw.a, libXmu.a libXt.a libX11.a
- * compile time parameters:
- ***************
- *** 91,96 ****
- --- 92,99 ----
- offset(initialCalendar), XtRString, "False" },
- {"initialEdit", "InitialEdit", XtRBoolean, sizeof(Boolean),
- offset(initialEdit), XtRString, "False" },
- + {"initialMemo", "InitialMemo", XtRBoolean, sizeof(Boolean),
- + offset(initialMemo), XtRString, "False" },
- {"markForeground", "MarkForeground", XtRPixel, sizeof(Pixel),
- offset(marked.fg), XtRString, "White" },
- {"markBackground", "MarkBackground", XtRPixel, sizeof(Pixel),
- ***************
- *** 104,112 ****
- {"todayBackground", "TodayBackground", XtRPixel, sizeof(Pixel),
- offset(today.bg), XtRString, "Black" },
- {"format", "Format",XtRString, sizeof(String),
- ! offset(opfmt), XtRString, "%2d %s %d"},
- {"order", "Order", XtRString, sizeof(String),
- ! offset(order), XtRString, "dmy"},
- {"directory", "Directory", XtRString, sizeof(String),
- offset(directory), XtRString, "Calendar"},
- {"textBufferSize", "TextBufferSize", XtRInt, sizeof(int),
- --- 107,121 ----
- {"todayBackground", "TodayBackground", XtRPixel, sizeof(Pixel),
- offset(today.bg), XtRString, "Black" },
- {"format", "Format",XtRString, sizeof(String),
- ! offset(opfmt), XtRString, "%s %2d %s %d"},
- {"order", "Order", XtRString, sizeof(String),
- ! offset(order), XtRString, "wdmy"},
- ! {"dateYearIsTwoDigits", "DateYearIsTwoDigits", XtRBoolean, sizeof(Boolean),
- ! offset(dateYearIs2), XtRString, "False" },
- ! {"editYearIsTwoDigits", "EditYearIsTwoDigits", XtRBoolean, sizeof(Boolean),
- ! offset(editYearIs2), XtRString, "False" },
- ! {"memoYearIsTwoDigits", "MemoYearIsTwoDigits", XtRBoolean, sizeof(Boolean),
- ! offset(memoYearIs2), XtRString, "False" },
- {"directory", "Directory", XtRString, sizeof(String),
- offset(directory), XtRString, "Calendar"},
- {"textBufferSize", "TextBufferSize", XtRInt, sizeof(int),
- ***************
- *** 164,182 ****
- {"dec", "Dec", XtRString, sizeof(String),
- offset(smon[11]), XtRString, "Dec"},
- {"sunday", "Sunday", XtRString, sizeof(String),
- ! offset(day[0]), XtRString, "Sun"},
- {"monday", "Monday", XtRString, sizeof(String),
- ! offset(day[1]), XtRString, "Mon"},
- {"tuesday", "Tuesday", XtRString, sizeof(String),
- ! offset(day[2]), XtRString, "Tue"},
- {"wednesday", "Wednesday", XtRString, sizeof(String),
- ! offset(day[3]), XtRString, "Wed"},
- {"thursday", "Thursday", XtRString, sizeof(String),
- ! offset(day[4]), XtRString, "Thu"},
- {"friday", "Friday", XtRString, sizeof(String),
- ! offset(day[5]), XtRString, "Fri"},
- {"saturday", "Saturday", XtRString, sizeof(String),
- ! offset(day[6]), XtRString, "Sat"},
- {"alarms", "Alarms", XtRBoolean, sizeof(Boolean),
- offset(alarms), XtRString, "True"},
- {"update", "Update", XtRInt, sizeof(int),
- --- 173,207 ----
- {"dec", "Dec", XtRString, sizeof(String),
- offset(smon[11]), XtRString, "Dec"},
- {"sunday", "Sunday", XtRString, sizeof(String),
- ! offset(day[0]), XtRString, "Sunday"},
- {"monday", "Monday", XtRString, sizeof(String),
- ! offset(day[1]), XtRString, "Monday"},
- {"tuesday", "Tuesday", XtRString, sizeof(String),
- ! offset(day[2]), XtRString, "Tuesday"},
- {"wednesday", "Wednesday", XtRString, sizeof(String),
- ! offset(day[3]), XtRString, "Wednesday"},
- {"thursday", "Thursday", XtRString, sizeof(String),
- ! offset(day[4]), XtRString, "Thursday"},
- {"friday", "Friday", XtRString, sizeof(String),
- ! offset(day[5]), XtRString, "Friday"},
- {"saturday", "Saturday", XtRString, sizeof(String),
- ! offset(day[6]), XtRString, "Saturday"},
- ! {"sun", "Sun", XtRString, sizeof(String),
- ! offset(sday[0]), XtRString, "Sun"},
- ! {"mon", "Mon", XtRString, sizeof(String),
- ! offset(sday[1]), XtRString, "Mon"},
- ! {"tue", "Tue", XtRString, sizeof(String),
- ! offset(sday[2]), XtRString, "Tue"},
- ! {"wed", "Wed", XtRString, sizeof(String),
- ! offset(sday[3]), XtRString, "Wed"},
- ! {"thu", "Thu", XtRString, sizeof(String),
- ! offset(sday[4]), XtRString, "Thu"},
- ! {"fri", "Fri", XtRString, sizeof(String),
- ! offset(sday[5]), XtRString, "Fri"},
- ! {"sat", "Sat", XtRString, sizeof(String),
- ! offset(sday[6]), XtRString, "Sat"},
- ! {"weekly", "Weekly", XtRString, sizeof(String),
- ! offset(weekly), XtRString, "Weekly"},
- {"alarms", "Alarms", XtRBoolean, sizeof(Boolean),
- offset(alarms), XtRString, "True"},
- {"update", "Update", XtRInt, sizeof(int),
- ***************
- *** 231,240 ****
- /*
- * Forward routines local to this file
- */
- ! void MkDate();
- ! void DebugMkDate();
- ! void DoTemplate();
- ! void DecodeOrder();
- #include "mouse.bm"
- #include "mouseaway.bm"
-
- --- 256,267 ----
- /*
- * Forward routines local to this file
- */
- ! static void MkDate();
- ! static void DebugMkDate();
- ! static void DoTemplate();
- ! static void DecodeOrder();
- ! static void PixInit();
- !
- #include "mouse.bm"
- #include "mouseaway.bm"
-
- ***************
- *** 362,367 ****
- --- 389,396 ----
- }
- XtAddActions(appActions, 3); /* register actions */
- XtAugmentTranslations(lab, XtParseTranslationTable(defTranslations));
- + if (appResources.useMemo)
- + XtAugmentTranslations(memo, XtParseTranslationTable(defTranslations));
-
- XtMapWidget(toplevel);
-
- ***************
- *** 377,390 ****
- --- 406,424 ----
- StartEditing(lab, &today);
- }
-
- + if (appResources.useMemo && appResources.initialMemo)
- + DoMemo(memo, NULL, NULL);
- +
- InitAlarms();
-
- XtMainLoop();
- + exit(0);
- }
-
- /*
- * Initialise Pixmaps
- */
- + static void
- PixInit(toplevel)
- Widget toplevel;
- {
- ***************
- *** 392,406 ****
-
- MouseOnPix = XCreateBitmapFromData(theDisplay,
- DefaultRootWindow(theDisplay),
- ! mouse_bits, mouse_width, mouse_height);
- MouseOffPix = XCreateBitmapFromData(theDisplay,
- DefaultRootWindow(theDisplay),
- ! mouseaway_bits, mouseaway_width, mouseaway_height);
- }
-
- /*
- * Flip mouse state
- */
- MouseShow(w, OnOff)
- Widget w;
- Boolean OnOff;
- --- 426,441 ----
-
- MouseOnPix = XCreateBitmapFromData(theDisplay,
- DefaultRootWindow(theDisplay),
- ! (char *)mouse_bits, mouse_width, mouse_height);
- MouseOffPix = XCreateBitmapFromData(theDisplay,
- DefaultRootWindow(theDisplay),
- ! (char *)mouseaway_bits, mouseaway_width, mouseaway_height);
- }
-
- /*
- * Flip mouse state
- */
- + void
- MouseShow(w, OnOff)
- Widget w;
- Boolean OnOff;
- ***************
- *** 417,422 ****
- --- 452,458 ----
- */
- void
- Leave(retval)
- + int retval;
- { exit(retval);
- }
-
- ***************
- *** 440,445 ****
- --- 476,482 ----
- dp->day = tm->tm_mday;
- dp->month = tm->tm_mon;
- dp->year = tm->tm_year + 1900;
- + dp->wday = tm->tm_wday;
- }
-
-
- ***************
- *** 454,466 ****
- if (timedOut)
- yesterday = today;
-
- ! ti = time(0);
- tm = localtime(&ti);
-
- ConvDate(tm, &today);
-
- ! PlaceStr(date_area,
- ! tm->tm_mday, appResources.mon[tm->tm_mon], tm->tm_year);
- XtSetValues(w, wargs, 1);
-
- if (timedOut)
- --- 491,503 ----
- if (timedOut)
- yesterday = today;
-
- ! (void) time(&ti);
- tm = localtime(&ti);
-
- ConvDate(tm, &today);
-
- ! PlaceStr(date_area, &today, appResources.dateYearIs2);
- !
- XtSetValues(w, wargs, 1);
-
- if (timedOut)
- ***************
- *** 486,499 ****
- yesterday = today;
-
- if (ti == 0)
- ! ti = time(0);
- else ti += 24*60*60;
-
- tm = localtime(&ti);
- ConvDate(tm, &today);
-
- ! PlaceStr(date_area,
- ! tm->tm_mday, appResources.mon[tm->tm_mon], tm->tm_year);
- XtSetValues(w, wargs, 1);
-
- if (timedOut)
- --- 523,536 ----
- yesterday = today;
-
- if (ti == 0)
- ! (void) time(&ti);
- else ti += 24*60*60;
-
- tm = localtime(&ti);
- ConvDate(tm, &today);
-
- ! PlaceStr(date_area, &today, appResources.dateYearIs2);
- !
- XtSetValues(w, wargs, 1);
-
- if (timedOut)
- ***************
- *** 513,529 ****
- */
- static void
- DoTemplate()
- ! { int maxmon;
- int i;
- int len;
- char trial[BUFSIZ];
-
-
- ! for (maxmon = i = 0; i < 12; i++)
- ! { PlaceStr(trial, 99, appResources.mon[i], 99);
- len = strlen(trial);
- ! if (len > maxmon)
- ! { maxmon = len;
- strcpy(date_area, trial);
- }
- }
- --- 550,578 ----
- */
- static void
- DoTemplate()
- ! { int max;
- int i;
- int len;
- char trial[BUFSIZ];
- + Date da;
-
- + da.day = 99;
- + da.year = 9999;
-
- ! for (da.wday = max = i = 0; i < 7; i++)
- ! { len = strlen(appResources.day[i]);
- ! if (len > max)
- ! { max = len;
- ! da.wday = i;
- ! }
- ! }
- !
- ! for (max = i = 0; i < 12; i++)
- ! { da.month = i;
- ! PlaceStr(trial, &da, appResources.dateYearIs2);
- len = strlen(trial);
- ! if (len > max)
- ! { max = len;
- strcpy(date_area, trial);
- }
- }
- ***************
- *** 536,565 ****
- DecodeOrder()
- {
- register char *p;
- !
- p = appResources.order;
-
- ! if (*p == 'd' && strcmp(p, "dmy") == 0)
- ! appResources.val_order = O_DMY;
- else
- if (*p == 'y')
- ! { if (strcmp(p, "ymd") == 0)
- ! appResources.val_order = O_YMD;
- else
- ! if (strcmp(p, "ydm") == 0)
- ! appResources.val_order = O_YDM;
- else
- ! appResources.val_order = -1;
- }
- else
- ! if (*p == 'm' && strcmp(p, "mdy") == 0)
- ! appResources.val_order = O_MDY;
- else
- ! appResources.val_order = -1;
- ! if (appResources.val_order == -1)
- { fprintf(stderr, "Unknown order: %s\n", p);
- ! appResources.val_order = O_DMY;
- }
- }
-
- /*
- --- 585,626 ----
- DecodeOrder()
- {
- register char *p;
- ! int order = 0;
- ! int addweekday = 0;
- !
- p = appResources.order;
-
- ! if (*p == 'w')
- ! { addweekday = O_WEEKLEFT;
- ! p++;
- ! }
- !
- ! if (*p == 'd' && strncmp(p, "dmy", 3) == 0)
- ! order = O_DMY;
- else
- if (*p == 'y')
- ! { if (strncmp(p, "ymd", 3) == 0)
- ! order = O_YMD;
- else
- ! if (strncmp(p, "ydm", 3) == 0)
- ! order = O_YDM;
- else
- ! order = -1;
- }
- else
- ! if (*p == 'm' && strncmp(p, "mdy", 3) == 0)
- ! order = O_MDY;
- else
- ! order = -1;
- ! if (order == -1)
- { fprintf(stderr, "Unknown order: %s\n", p);
- ! order = O_DMY;
- }
- +
- + if (addweekday == 0 && p[3] == 'w')
- + addweekday = O_WEEKRIGHT;
- +
- + appResources.val_order = order | addweekday;
- }
-
- /*
- ***************
- *** 566,581 ****
- * make a string
- */
- void
- ! PlaceStr(dest, d, m, y)
- String dest;
- ! int d;
- ! String m;
- ! int y;
- {
- register String fmt;
-
- if (y > 99 && y < 1900)
- y -= 100;
-
- fmt = appResources.opfmt;
-
- --- 627,648 ----
- * make a string
- */
- void
- ! PlaceStr(dest, da, is2)
- String dest;
- ! Date *da;
- ! Boolean is2;
- {
- register String fmt;
- + int d = da->day;
- + String m = appResources.mon[da->month];
- + int y = da->year;
- + String w = appResources.day[da->wday];
-
- if (y > 99 && y < 1900)
- y -= 100;
- +
- + if (is2)
- + y %= 100;
-
- fmt = appResources.opfmt;
-
- ***************
- *** 584,597 ****
- --- 651,688 ----
- case O_DMY: /* default */
- (void) sprintf(dest, fmt, d, m, y);
- break;
- + case O_DMY|O_WEEKLEFT:
- + (void) sprintf(dest, fmt, w, d, m, y);
- + break;
- + case O_DMY|O_WEEKRIGHT:
- + (void) sprintf(dest, fmt, d, m, y, w);
- + break;
- case O_YMD: /* Year/Month/Day */
- (void) sprintf(dest, fmt, y, m, d);
- break;
- + case O_YMD|O_WEEKLEFT: /* Year/Month/Day */
- + (void) sprintf(dest, fmt, w, y, m, d);
- + break;
- + case O_YMD|O_WEEKRIGHT: /* Year/Month/Day */
- + (void) sprintf(dest, fmt, y, m, d, w);
- + break;
- case O_MDY: /* Month/Day/Year */
- (void) sprintf(dest, fmt, m, d, y);
- break;
- + case O_MDY|O_WEEKLEFT: /* Month/Day/Year */
- + (void) sprintf(dest, fmt, w, m, d, y);
- + break;
- + case O_MDY|O_WEEKRIGHT: /* Month/Day/Year */
- + (void) sprintf(dest, fmt, m, d, y, w);
- + break;
- case O_YDM: /* Year/Day/Month */
- (void) sprintf(dest, fmt, y, d, m);
- + break;
- + case O_YDM|O_WEEKLEFT: /* Year/Day/Month */
- + (void) sprintf(dest, fmt, w, y, d, m);
- + break;
- + case O_YDM|O_WEEKRIGHT: /* Year/Day/Month */
- + (void) sprintf(dest, fmt, y, d, m, w);
- break;
- }
- }
- *** xcal.h~ Fri Mar 22 23:34:57 1991
- --- xcal.h Fri Mar 22 23:48:25 1991
- ***************
- *** 1,5 ****
- /*
- ! * xcal.h 3.8 12/12/90
- *
- * Header file for the xcal program
- */
- --- 1,5 ----
- /*
- ! * xcal.h 3.14 1/16/91
- *
- * Header file for the xcal program
- */
- ***************
- *** 10,28 ****
- * so undef if not true
- * and fiddle with the definitions below
- */
- ! #define LONG_IS_32_BITS
-
- /* pack year and month into Cardinals */
- #ifdef LONG_IS_32_BITS
- ! #define DatePack(d, m, y) ((((d)&0x1f)<<16) | (((m)&0xf)<<12) | ((y)&0xfff))
- #define YrUnpack(v) ((v)&0xfff)
- #define MoUnpack(v) (((v)>>12)&0xf)
- #define DyUnpack(v) (((v)>>16)&0x1f)
- ! #else LONG_IS_32_BITS
- #define DatePack(m, y) ((((m)&0xf)<<12) | ((y)&0xfff))
- #define YrUnpack(v) ((v)&0xfff)
- #define MoUnpack(v) (((v)>>12)&0xf)
- ! #endif LONG_IS_32_BITS
-
- /*
- * Foreground/Background colours
- --- 10,32 ----
- * so undef if not true
- * and fiddle with the definitions below
- */
- ! /* #define LONG_IS_32_BITS */
-
- /* pack year and month into Cardinals */
- #ifdef LONG_IS_32_BITS
- ! #define DatePack(w, d, m, y) ((((w)&0x7)<<21) | (((d)&0x1f)<<16) | (((m)&0xf)<<12) | ((y)&0xfff))
- #define YrUnpack(v) ((v)&0xfff)
- #define MoUnpack(v) (((v)>>12)&0xf)
- #define DyUnpack(v) (((v)>>16)&0x1f)
- ! #define WdUnpack(v) (((v)>>21)&0x7)
- ! #else /* LONG_IS_32_BITS */
- #define DatePack(m, y) ((((m)&0xf)<<12) | ((y)&0xfff))
- + #define DayPack(w, d) ((((w)&0x7)<<5) | ((d)&0x1f))
- #define YrUnpack(v) ((v)&0xfff)
- #define MoUnpack(v) (((v)>>12)&0xf)
- ! #define DyUnpack(v) ((v)&0x1f)
- ! #define WdUnpack(v) (((v)>>5)&0xf)
- ! #endif /* LONG_IS_32_BITS */
-
- /*
- * Foreground/Background colours
- ***************
- *** 47,55 ****
- Boolean giveHelp; /* True if help is needed (default) */
- Boolean initialCalendar;/* Pop up Calendar on startup if True */
- Boolean initialEdit; /* Pop up today's Edit on startup if True */
- String mon[12]; /* Long month names */
- String smon[12]; /* Short month names */
- ! String day[7]; /* day names */
- String opfmt; /* format for main box */
- String order; /* Orders are dmy/ymd/mdy/ydm */
- int val_order; /* The selected order */
- --- 51,65 ----
- Boolean giveHelp; /* True if help is needed (default) */
- Boolean initialCalendar;/* Pop up Calendar on startup if True */
- Boolean initialEdit; /* Pop up today's Edit on startup if True */
- + Boolean initialMemo; /* Pop up memo box on start */
- + Boolean dateYearIs2; /* Display year as two digits in date strip */
- + Boolean editYearIs2; /* Display year as two digits in edit strip */
- + Boolean memoYearIs2; /* Display year as two digits in memo strip */
- String mon[12]; /* Long month names */
- String smon[12]; /* Short month names */
- ! String day[7]; /* Day names - full */
- ! String sday[7]; /* Short day names */
- ! String weekly; /* Title of weekly edit strip */
- String opfmt; /* format for main box */
- String order; /* Orders are dmy/ymd/mdy/ydm */
- int val_order; /* The selected order */
- ***************
- *** 65,72 ****
- int update; /* interval between peeks (60 secs) */
- int volume; /* how loud to beep the alarm 0-100 */
- int nbeeps; /* how many beeps for an alarm ? */
- - long last_size; /* save the last time size */
- - long last_time; /* save the last time file accessed */
- int autoquit; /* Automatically delete message boxes */
- String countdown; /* Comma separated countdown string for alarms */
- String cmd; /* command to execute for every alarm */
- --- 75,80 ----
- ***************
- *** 85,94 ****
- /*
- * Order coding inserted into val_order
- */
- ! #define O_DMY 0 /* default */
- ! #define O_YMD 1 /* Year/Month/Day */
- ! #define O_MDY 2 /* Month/Day/Year */
- ! #define O_YDM 3 /* Year/Day/Month */
-
- /*
- * Date structure
- --- 93,105 ----
- /*
- * Order coding inserted into val_order
- */
- ! #define O_DMY 0 /* default */
- ! #define O_YMD 1 /* Year/Month/Day */
- ! #define O_MDY 2 /* Month/Day/Year */
- ! #define O_YDM 3 /* Year/Day/Month */
- ! #define O_WEEKLEFT 4 /* Place day of the week on the left */
- ! #define O_WEEKRIGHT 8 /* Place day of the week on the right */
- ! #define O_WEEKMASK O_WEEKLEFT|O_WEEKRIGHT
-
- /*
- * Date structure
- ***************
- *** 97,102 ****
- --- 108,114 ----
- { Cardinal day;
- Cardinal month;
- Cardinal year;
- + Cardinal wday;
- } Date;
-
- /*
- ***************
- *** 108,115 ****
- --- 120,131 ----
- Cardinal me_month; /* which month */
- String me_have[32]; /* if a file present for the day */
- /* then will have a non-zero entry */
- + int me_type; /* type of displayed strip */
- } MonthEntry;
-
- + #define ME_MONTHLY 1 /* `Normal' monthly strip */
- + #define ME_WEEKLY 2 /* Weekly strip */
- +
- /*
- * An instance of the strip
- */
- ***************
- *** 150,156 ****
- --- 166,175 ----
- /*
- * Global routines
- */
- + void InitAlarms();
- + void MouseShow();
- void Leave();
- + void Fatal();
- void SetDate();
- void AskLeave();
- void DialogPopup();
- ***************
- *** 158,171 ****
- --- 177,198 ----
- void TextCal();
- void DoCalendar();
- void DoMemo();
- + void DoWeekly();
- void MemoPoll();
- void NewMonthStrip();
- void InitMonthEntries();
- void ChangeHighlight();
- void NoEditIsPossible();
- + void NoDayEditIsPossible();
- void StartEditing();
- MonthEntry *GetMonthEntry();
- + MonthEntry *GetWeeklyEntry();
- void AlarmFilePoll();
- String ReadCalendarFile();
- void UpdateMemo();
- void PlaceStr();
- + String MakeWeeklyName();
- + String GetWeeklyFile();
- + Boolean NeedTop();
- +
- + time_t time();
- *** xcal.man~ Fri Mar 22 23:34:50 1991
- --- xcal.man Fri Mar 22 23:48:21 1991
- ***************
- *** 21,28 ****
- program.
- The format of the command box may be altered using the resource manager, so you
- are not stuck with my preferred format.
- ! A small button in the top level window can be pressed to inspect todays
- ! appointments and also to edit or display a memo file.
- .LP
- The calendar and notebook functions are accessed by clicking the mouse
- buttons inside date portion of the command window.
- --- 21,31 ----
- program.
- The format of the command box may be altered using the resource manager, so you
- are not stuck with my preferred format.
- ! A small button in the top level window can be pressed to
- ! inspect appointments for today.
- ! This generates a panel showing information from the calendar file for today and
- ! information from a set of seven daily files holding regular commitments.
- ! Finally, the memo panel displays and allows the edit of a memo file.
- .LP
- The calendar and notebook functions are accessed by clicking the mouse
- buttons inside date portion of the command window.
- ***************
- *** 113,123 ****
- .I Xcal
- is accessed by pressing the non-date portion of the command window.
- Currently this shows a bitmap diagram of three mouse buttons.
- ! Clicking the left mouse button in this area brings up a complex panel.
- The top half of the panel displays the information held in the diary
- for today; you cannot edit the data from here \- and must open the
- diary strip to change the data.
- ! The bottom half of the panel is an edit window displaying the contents
- of a file usually called `memo' in the Calendar directory.
- The idea of this panel is to allow you to access your current information
- in one button click.
- --- 116,132 ----
- .I Xcal
- is accessed by pressing the non-date portion of the command window.
- Currently this shows a bitmap diagram of three mouse buttons.
- ! Clicking the left mouse button in this area brings up a complex panel,
- ! clicking on the button again will pop is back down again.
- The top half of the panel displays the information held in the diary
- for today; you cannot edit the data from here \- and must open the
- diary strip to change the data.
- ! The next section of the panel displays the information held in the
- ! weekly files.
- ! Again you cannot directly change the text in this area, you must
- ! press on the Edit button to bring up a strip enabling you to
- ! change things.
- ! The bottom portion of the panel is an edit window displaying the contents
- of a file usually called `memo' in the Calendar directory.
- The idea of this panel is to allow you to access your current information
- in one button click.
- ***************
- *** 197,202 ****
- --- 206,224 ----
- info command containing the file data
- .EE
- .LP
- + The weekly popup strip is:
- + .EX
- + weekly the popup shell
- + weekly panel containing the strip
- + header label containing the title
- + action form containing quit and help
- + quit command containing exit button
- + help command generating help
- + shortday form containing days
- + label label containing day of the week
- + info command containing the file data
- + .EE
- + .LP
- The Edit Window is:
- .EX
- edit the popup shell
- ***************
- *** 203,209 ****
- panel the panel inside the shell
- title the form containing the first line
- quit the exit button
- ! .EE
- .LP
- The Help Window is:
- .EX
- --- 225,231 ----
- panel the panel inside the shell
- title the form containing the first line
- quit the exit button
- ! .EE
- .LP
- The Help Window is:
- .EX
- ***************
- *** 234,239 ****
- --- 256,265 ----
- help the help button
- date display today's date
- display text from today's date file
- + weeklyMemo form for the Memo title line
- + weeklyEdit Edit button
- + weeklyTitle Title area
- + 2 display text from today's weekly file
- memoMiddle Middle line form widget
- save Save button
- memoTitle text title of middle line
- ***************
- *** 299,316 ****
- If true display the output in reverse video.
- .IP
- .B Format
- ! The \fIprintf\fP string used to create the contents of the top command
- ! button.
- ! The default is "%2d %s %d", the arguments to this command are presented
- in a default order: day, month string and year.
- ! The order is controlled by the Order resource which contains the default
- ! string "dmy".
- ! These two resources should allow all forms of date printing.
- .TP
- .B Order
- ! Legal combinations are: dmy, ymd, mdy, ydm.
- ! The default is dmy.
- .TP
- .B MarkBackground
- The background colour for highlighting entries.
- Default Black.
- --- 325,371 ----
- If true display the output in reverse video.
- .IP
- .B Format
- ! The \fIprintf\fP format used to create the contents of the top command button,
- ! the title in an edit window and the title in the memo window.
- ! The default is "%s %2d %s %d", the arguments to this command are presented
- in a default order: day, month string and year.
- ! The order is controlled by the Order resource, this contains the default
- ! string "wdmy".
- .TP
- .B Order
- ! This resource gives the order that various arguments are presented to the
- ! printf using the format string defined above.
- ! Legal combinations using day, month and year are: dmy, ymd, mdy, ydm.
- ! The name of today can be inserted at the start of the string by
- ! using one of the formats: wdmy, wymd, wmdy, wydm.
- ! It can be entered at the end by using on of the formats: dmyw, ymdw, mdyw, ydmw.
- ! In case you are wondering the `w' stands for `day' of the week.
- ! Beware that altering this resource from
- ! the default may force you to change the format string,
- ! see the previous resource.
- ! The default is wdmy.
- .TP
- + .B DateYearIsTwoDigits
- + The display of the year in the date strip is controlled
- + the format above.
- + If this resource is true then the year will be displayed as a two
- + digit number; if false the whole four digits will be displayed.
- + Default: False.
- + .TP
- + .B EditYearIsTwoDigits
- + The display of the year in the edit boxes is controlled by
- + the format above.
- + If this resource is true then the year will be displayed as a two
- + digit number; if false the whole four digits will be displayed.
- + Default: False.
- + .TP
- + .B MemoYearIsTwoDigits
- + The display of the year in the memo box is controlled
- + the format above.
- + If this resource is true then the year will be displayed as a two
- + digit number; if false the whole four digits will be displayed.
- + Default: False.
- + .TP
- .B MarkBackground
- The background colour for highlighting entries.
- Default Black.
- ***************
- *** 362,367 ****
- --- 417,426 ----
- If False, the edit window is not automatically displayed.
- Default: False.
- .TP
- + .B InitialMemo
- + If True then the memo window is automatically displayed on startup.
- + Default: False.
- + .TP
- .B UseWmTitle
- If True display the month and the year at the head of each strip.
- This information is duplicated if your window manager uses titles
- ***************
- *** 485,491 ****
- .B Sunday
- .B Monday
- and so on.
- ! The names of the days, these are currently set to a three character short form.
- .SH FILES
- .PP
- $HOME/Calendar/*
- --- 544,560 ----
- .B Sunday
- .B Monday
- and so on.
- ! The \fIlong\fP names of the days: Sunday, Monday etc.
- ! These are used in titles: the top level widget, the title of an edit window
- ! and the memo frame.
- ! .TP
- ! .B Sun
- ! .B Mon
- ! and so on.
- ! The short names of the days \- used in date strips.
- ! .TP
- ! .B Weekly
- ! The word `Weekly' used in various places.
- .SH FILES
- .PP
- $HOME/Calendar/*
- ***************
- *** 496,501 ****
- --- 565,576 ----
- .TP
- xy<Year>
- A year directory.
- + .TP
- + xw<Day>
- + A data file for the weekly code, one per day.
- + .TP
- + memo
- + The memo file.
- .LP
- The standard resource database can be found in /usr/lib/X11/app-defaults/Xcal.
- Assuming that this is where the system admin installed it.
- ***************
- *** 514,519 ****
- --- 589,596 ----
- Countdown does not work in the early hours of the morning, if you have a
- ten minute countdown and an alarm set at 0005 \- then you will not get
- warning at 2325.
- + .LP
- + Alarms set at 0000 probably won't work.
- .SH AUTHOR
- .LP
- Copyright 1989,1990 by Peter Collinson, Hillside Systems
- *** xcal_alarm.c~ Fri Mar 22 23:34:52 1991
- --- xcal_alarm.c Fri Mar 22 23:48:22 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_alarm.c 1.10 (Hillside Systems) 12/12/90";
- static char *copyright = "@(#)Copyright 1989/1990 Mark Majhor, Peter Collinson";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_alarm.c 1.13 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989/1990 Mark Majhor, Peter Collinson";
- #endif /* lint */
- /***
- ***************
- *** 44,54 ****
- #define scrollVertical 0x02
- #endif
-
- ! static struct stat stbuf;
- ! static Boolean false = False;
- ! static Boolean true = True;
- ! static char *LocalMapStem;
- ! static Boolean LocalFoundCalendarFile;
- static Alarm head;
- static int *countDown;
- static int countDownCt;
- --- 44,51 ----
- #define scrollVertical 0x02
- #endif
-
- ! static char *LocalMapStem;
- ! static char *TodayFile;
- static Alarm head;
- static int *countDown;
- static int countDownCt;
- ***************
- *** 169,175 ****
- struct tm *tm;
- {
- time_t ti;
- ! struct stat stbuf;
- char *home;
- char buf[256];
- char *getenv();
- --- 166,172 ----
- struct tm *tm;
- {
- time_t ti;
- ! int files;
- char *home;
- char buf[256];
- char *getenv();
- ***************
- *** 209,236 ****
- if (LocalMapStem)
- XtFree(LocalMapStem);
- LocalMapStem = XtNewString(buf);
- ! dprintf("Todays Filename = %s\n", LocalMapStem);
- }
-
- /*
- * check for file existence
- */
- ! if (access(LocalMapStem, F_OK))
- ! { FreeAlarmList();
- ! UpdateMemo();
- ! return;
- ! }
-
- ! if (stat(LocalMapStem, &stbuf) < 0)
- ! Fatal("Panic: cannot stat %s\n", LocalMapStem);
-
- ! if (stbuf.st_size != appResources.last_size ||
- ! stbuf.st_mtime > appResources.last_time)
- ! { appResources.last_size = stbuf.st_size;
- ! appResources.last_time = stbuf.st_mtime;
- ! AlarmScan(LocalMapStem, tm, MINUTES(tm->tm_hour, tm->tm_min));
- ! UpdateMemo();
- }
- }
-
- static void
- --- 206,240 ----
- if (LocalMapStem)
- XtFree(LocalMapStem);
- LocalMapStem = XtNewString(buf);
- ! dprintf("Todays Daily Filename = %s\n", LocalMapStem);
- !
- ! if (TodayFile)
- ! XtFree(TodayFile);
- !
- ! TodayFile = MakeWeeklyName(today.wday);
- }
-
- + files = 0;
- /*
- * check for file existence
- */
- ! if (access(LocalMapStem, F_OK) == 0)
- ! files = 1;
- ! if (access(TodayFile, F_OK) == 0)
- ! files |= 2;
-
- ! FreeAlarmList();
-
- ! if (files)
- ! { if (files&1)
- ! AlarmScan(LocalMapStem, tm, MINUTES(tm->tm_hour, tm->tm_min));
- ! if (files&2)
- ! AlarmScan(TodayFile, tm, MINUTES(tm->tm_hour, tm->tm_min));
- }
- + else
- + dprintf("No files to scan");
- +
- + UpdateMemo();
- }
-
- static void
- ***************
- *** 247,256 ****
- Boolean isAction;
-
-
- ! dprintf("Scanning data file\n");
-
- - FreeAlarmList();
- -
- if ((fp = fopen(file, "r")) == NULL)
- { fprintf(stderr, "Unexpected failure to open: %s\n", file);
- exit(1);
- --- 251,258 ----
- Boolean isAction;
-
-
- ! dprintf("Scanning data file %s\n", file);
-
- if ((fp = fopen(file, "r")) == NULL)
- { fprintf(stderr, "Unexpected failure to open: %s\n", file);
- exit(1);
- ***************
- *** 308,314 ****
- {
-
- Alarm *al, *prev, *new;
- - int bo;
- char *XtMalloc();
- int al_hr, al_mn, mm;
- int loop;
- --- 310,315 ----
- ***************
- *** 393,399 ****
- LookSp, LoseSp, Store, AllDone
- } state;
- register int c = 0;
- ! int hr, mn;
- char *destp;
-
- if (feof(fin))
- --- 394,400 ----
- LookSp, LoseSp, Store, AllDone
- } state;
- register int c = 0;
- ! int hr = 0, mn = 0;
- char *destp;
-
- if (feof(fin))
- ***************
- *** 522,528 ****
- {
- Alarm *sc;
- int togo;
- - int mwanted;
-
- for (sc = head.next; sc; sc = sc->next)
- { togo = sc->alarm_mm - mnow;
- --- 523,528 ----
- ***************
- *** 586,592 ****
- beep()
- {
- register Display *dpy = XtDisplay(toplevel);
- - register Window win = XtWindow(toplevel);
- int i;
-
- for (i = 0; i < appResources.nbeeps; i++)
- --- 586,591 ----
- *** xcal_cal.c~ Fri Mar 22 23:34:49 1991
- --- xcal_cal.c Fri Mar 22 23:48:20 1991
- ***************
- *** 45,54 ****
- #include <ctype.h>
- #include <sys/param.h>
- #include <sys/types.h>
- #include <sys/dir.h>
- #include <time.h>
- - #include <strings.h>
-
- char *directory = "Calendar";
- char *file = ".xcal";
- char *home;
- --- 45,63 ----
- #include <ctype.h>
- #include <sys/param.h>
- #include <sys/types.h>
- + #ifdef SYSV
- + #include <dirent.h>
- + #include <string.h>
- + #else
- + #include <strings.h>
- + #endif
- #include <sys/dir.h>
- #include <time.h>
-
- +
- + #ifdef SYSV
- + #define index strchr
- + #endif
- char *directory = "Calendar";
- char *file = ".xcal";
- char *home;
- *** xcal_edit.c~ Fri Mar 22 23:34:53 1991
- --- xcal_edit.c Fri Mar 22 23:48:22 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_edit.c 3.9 (Hillside Systems) 12/13/90";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_edit.c 3.15 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- ***************
- *** 63,68 ****
- --- 63,70 ----
- #define mw_month mw_me.me_month
- #define mw_have mw_me.me_have
-
- + #define StripType(mw) (mw->mw_me.me_type)
- +
- static MeWrap *WrapBase; /* base of the list */
- static MeWrap *WrapEnd; /* the last one in the list */
-
- ***************
- *** 84,89 ****
- --- 86,92 ----
- static MeWrap *MeWrapSearch();
- static void DeRegisterMonth();
- static Boolean WriteCalendarFile();
- + static Boolean WriteWeeklyFile();
- static void DeleteCalendarFile();
- static void SetAllButtons();
- static void TextChanged();
- ***************
- *** 93,98 ****
- --- 96,102 ----
- static void CheckDia();
- static void YesCheck();
- static void NoCheck();
- + static int DayMatch();
- void StartDayEditor();
- void Fatal();
-
- ***************
- *** 202,209 ****
- while ((dp = readdir(dirp)) != NULL)
- {
- #ifdef SYSV
- ! int d_namlen = strlen(dp->d_name) +1;
- ! switch(d_namlen)
- #else
- switch(dp->d_namlen)
- #endif
- --- 206,212 ----
- while ((dp = readdir(dirp)) != NULL)
- {
- #ifdef SYSV
- ! switch(strlen(dp->d_name))
- #else
- switch(dp->d_namlen)
- #endif
- ***************
- *** 272,277 ****
- --- 275,341 ----
- }
-
- /*
- + * Get the entry for the weekly strip
- + * Files are xw<Day> in the Calendar directory
- + */
- + MonthEntry *
- + GetWeeklyEntry(yr, mo)
- + Cardinal yr;
- + Cardinal mo;
- + {
- + MeWrap *mw;
- + int da;
- + DIR *dirp;
- + #ifdef SYSV
- + struct dirent *dp;
- + #else
- + struct direct *dp;
- + #endif
- +
- + if ((mw = MeWrapSearch(0, 0)) == NULL)
- + mw = NewMeWrap(0, 0);
- +
- + if (!FoundCalendarDir)
- + return(&mw->mw_me);
- +
- + if ((dirp = opendir(".")) == NULL)
- + Fatal("Cannot open directory: %s", MapStem);
- +
- + for (da = 0; da < 7; da++)
- + if (mw->mw_have[da])
- + { XtFree(mw->mw_have[da]);
- + mw->mw_have[da] = NULL;
- + }
- +
- + while ((dp = readdir(dirp)) != NULL)
- + {
- + if (dp->d_name[0] == 'x' &&
- + dp->d_name[1] == 'w' &&
- + ((da = DayMatch(&dp->d_name[2])) != -1))
- + {
- + mw->mw_have[da] = ReadCalendarFile(NULL, dp->d_name);
- + }
- + }
- + closedir(dirp);
- + return(&mw->mw_me);
- + }
- +
- + /*
- + * Look for a short name match with a day
- + */
- + static int
- + DayMatch(day)
- + String day;
- + {
- + register i;
- +
- + for (i = 0; i < 7; i++)
- + if (strcmp(day, appResources.sday[i]) == 0)
- + return(i);
- + return (-1);
- + }
- +
- + /*
- * create a new MapWrap area
- */
- static MeWrap *
- ***************
- *** 335,341 ****
-
- callbacks[0].callback = DeRegisterMonth;
- #ifdef LONG_IS_32_BITS
- ! callbacks[0].closure = (caddr_t)DatePack(0, mo, yr);
- #else
- callbacks[0].closure = (caddr_t)DatePack(mo, yr);
- #endif
- --- 399,405 ----
-
- callbacks[0].callback = DeRegisterMonth;
- #ifdef LONG_IS_32_BITS
- ! callbacks[0].closure = (caddr_t)DatePack(0, 0, mo, yr);
- #else
- callbacks[0].closure = (caddr_t)DatePack(mo, yr);
- #endif
- ***************
- *** 434,439 ****
- --- 498,529 ----
- }
-
- /*
- + * Check to see if we should create the top directory
- + */
- + Boolean
- + NeedTop()
- + {
- + if (!FoundCalendarDir)
- + { if (mkdir(MapStem, 0700) == -1)
- + { XBell(XtDisplay(toplevel), 0);
- + fprintf(stderr, "xcal: Could not create: %s directory.\n", MapStem);
- + perror("xcal: mkdir");
- + fflush(stderr);
- + return(False);
- + }
- + if (chdir(MapStem) < 0)
- + { XBell(XtDisplay(toplevel), 0);
- + fprintf(stderr, "xcal: Could not chdir into %s.\n", MapStem);
- + perror("xcal: chdir");
- + fflush(stderr);
- + return(False);
- + }
- + FoundCalendarDir = True;
- + }
- + return(True);
- + }
- +
- + /*
- * Write a calendar file creating any directories
- * which are needed
- * Return True is OK
- ***************
- *** 454,481 ****
- { DeleteCalendarFile(mw, day);
- return(True);
- }
- /*
- - * First let's see if we have
- - * to create the toplevel directory
- - */
- - if (!FoundCalendarDir)
- - { if (mkdir(MapStem, 0700) == -1)
- - { XBell(XtDisplay(toplevel), 0);
- - fprintf(stderr, "xcal: Could not create: %s directory.\n", MapStem);
- - perror("xcal: mkdir");
- - fflush(stderr);
- - return(False);
- - }
- - if (chdir(MapStem) < 0)
- - { XBell(XtDisplay(toplevel), 0);
- - fprintf(stderr, "xcal: Could not chdir into %s.\n", MapStem);
- - perror("xcal: chdir");
- - fflush(stderr);
- - return(False);
- - }
- - FoundCalendarDir = True;
- - }
- - /*
- * So that looks OK
- * We can now create the output file.
- * However, we would like to put any new data into subdirectories
- --- 544,553 ----
- { DeleteCalendarFile(mw, day);
- return(True);
- }
- + if (!NeedTop())
- + return(False);
- +
- /*
- * So that looks OK
- * We can now create the output file.
- * However, we would like to put any new data into subdirectories
- ***************
- *** 570,575 ****
- --- 642,726 ----
- }
-
- /*
- + * Write daily file out
- + */
- + static Boolean
- + WriteWeeklyFile(mw, day, contents)
- + register MeWrap *mw;
- + Cardinal day;
- + char *contents;
- + {
- + int fd;
- + Cardinal len;
- + char *fname;
- +
- + fname = MakeWeeklyName(day);
- +
- + len = strlen(contents);
- + if (len == 0)
- + (void) unlink(fname);
- + else
- + { if ((fd = open(fname, O_WRONLY|O_TRUNC|O_CREAT, 0666)) < 0)
- + { XBell(XtDisplay(toplevel), 0);
- + fprintf(stderr, "xcal: Could not open %s/%s for writing.\n", MapStem, fname);
- + perror("xcal: open");
- + fflush(stderr);
- + return(False);
- + }
- +
- + if (write(fd, contents, len) != len)
- + { XBell(XtDisplay(toplevel), 0);
- + fprintf(stderr, "xcal: Write error %s/%s file.\n", MapStem, fname);
- + perror("xcal: write");
- + fflush(stderr);
- + close(fd);
- + return(False);
- + }
- + close(fd);
- + }
- + /*
- + * tickle the alarm system if we have altered `today'
- + */
- + if (today.wday == day)
- + AlarmFilePoll(NULL);
- +
- + return(True);
- + }
- +
- + /*
- + * Create a standard weekly file name
- + */
- + String
- + MakeWeeklyName(day)
- + Cardinal day;
- + {
- + static char fname[16];
- +
- + (void) sprintf(fname, "xw%s", appResources.sday[day]);
- + return(fname);
- + }
- +
- + /*
- + * Get the contents of the current Weekly file if any
- + */
- + String
- + GetWeeklyFile(day)
- + Cardinal day;
- + {
- + char *fname;
- +
- + if (FoundCalendarDir == False)
- + return (NULL);
- +
- + fname = MakeWeeklyName(day);
- +
- + if (access(fname, F_OK) < 0)
- + return(NULL);
- +
- + return (ReadCalendarFile(NULL, fname));
- + }
- +
- + /*
- * Start up an editor window from the callback
- * Pass the calling widget so we can change its contents
- * after the edit
- ***************
- *** 592,598 ****
- { if (ed->ed_day == da->day)
- { /* we are! */
- /* Complain via a popup */
- ! NoEditIsPossible(w, da);
- return;
- }
- }
- --- 743,757 ----
- { if (ed->ed_day == da->day)
- { /* we are! */
- /* Complain via a popup */
- ! switch (StripType(mw))
- ! {
- ! case ME_MONTHLY:
- ! NoEditIsPossible(w, da);
- ! break;
- ! case ME_WEEKLY:
- ! NoDayEditIsPossible(w, da->day);
- ! break;
- ! }
- return;
- }
- }
- ***************
- *** 724,730 ****
- lw = XtCreateManagedWidget("help", commandWidgetClass, frame, args, nargs);
- }
-
- ! PlaceStr(buf, da->day, appResources.mon[da->month], da->year);
- nargs = 0;
- XtSetArg(args[nargs], XtNlabel, buf); nargs++;
- XtSetArg(args[nargs], XtNborderWidth, 0); nargs++;
- --- 883,897 ----
- lw = XtCreateManagedWidget("help", commandWidgetClass, frame, args, nargs);
- }
-
- ! switch (StripType(mw))
- ! {
- ! case ME_MONTHLY:
- ! PlaceStr(buf, da, appResources.editYearIs2);
- ! break;
- ! case ME_WEEKLY:
- ! (void) strcpy(buf, appResources.day[da->day]);
- ! break;
- ! }
- nargs = 0;
- XtSetArg(args[nargs], XtNlabel, buf); nargs++;
- XtSetArg(args[nargs], XtNborderWidth, 0); nargs++;
- ***************
- *** 786,799 ****
- register Instance *ins;
- register MeWrap *mw;
- register Cardinal day;
- - extern Widget toplevel;
- Arg args[3];
-
- mw = ed->ed_meWrap;
- day = ed->ed_day;
-
- ! if (WriteCalendarFile(mw, day, ed->ed_data) == False)
- ! return;
- /*
- * Otherwise change the displayed string
- */
- --- 953,974 ----
- register Instance *ins;
- register MeWrap *mw;
- register Cardinal day;
- Arg args[3];
-
- mw = ed->ed_meWrap;
- day = ed->ed_day;
-
- ! switch (StripType(mw))
- ! {
- ! case ME_MONTHLY:
- ! if (WriteCalendarFile(mw, day, ed->ed_data) == False)
- ! return;
- ! break;
- ! case ME_WEEKLY:
- ! if (WriteWeeklyFile(mw, day, ed->ed_data) == False)
- ! return;
- ! break;
- ! }
- /*
- * Otherwise change the displayed string
- */
- ***************
- *** 819,827 ****
- /*
- * worry about updating the memo system
- */
- ! if (today.day == day && today.month == mw->mw_month &&
- ! today.year == mw->mw_year)
- ! UpdateMemo();
-
- }
-
- --- 994,1012 ----
- /*
- * worry about updating the memo system
- */
- !
- ! switch (StripType(mw))
- ! {
- ! case ME_MONTHLY:
- ! if (today.day == day && today.month == mw->mw_month &&
- ! today.year == mw->mw_year)
- ! UpdateMemo();
- ! break;
- ! case ME_WEEKLY:
- ! if (today.wday == day)
- ! UpdateMemo();
- ! break;
- ! }
-
- }
-
- *** xcal_help.c~ Fri Mar 22 23:34:49 1991
- --- xcal_help.c Fri Mar 22 23:48:20 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_help.c 3.5 (Hillside Systems) 12/7/90";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_help.c 3.6 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- ***************
- *** 223,225 ****
- --- 223,260 ----
-
- DisplayHelpWindow(memoHelp);
- }
- +
- + static char weeklyHelp[] = "\
- + The weekly strip consists of a number of lines of text. \n\n\
- + Line 1: The title\n\
- + Line 2: The Quit button that removes the strip from the screen\n\
- + Line 3: The Help Button.\n\
- + Help can be suppressed by setting `giveHelp' to False.\n\n\
- + Then - A line for each day in the week.\n\
- + Each line is two areas:\n\
- + The left hand side shows the day in the week\n\
- + The right hand side is an active button. When pressed it starts\n\
- + up an editor for the day. This will create a file for the day\n\
- + in the user's Calendar directory. The label on the button will\n\
- + be the first few characters of the file, if there are any.\n\
- + \n\
- + XCal was written by Peter Collinson\n\
- + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
- +
- + /* ARGSUSED */
- + void
- + WeeklyHelp(w, closure, call_data)
- + Widget w;
- + caddr_t closure;
- + caddr_t call_data;
- + {
- + static int vadded;
- +
- + if (vadded == 0)
- + { vadded = 1;
- + addversion(weeklyHelp);
- + }
- +
- + DisplayHelpWindow(weeklyHelp);
- + }
- +
- *** xcal_memo.c~ Fri Mar 22 23:34:51 1991
- --- xcal_memo.c Fri Mar 22 23:48:21 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_memo.c 1.5 (Hillside Systems) 12/13/90";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_memo.c 1.11 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- ***************
- *** 53,69 ****
- Widget m_display; /* widget of display title area */
- Widget m_text; /* the text area */
- Widget m_today; /* today's data */
- Cardinal m_size; /* size of the buffer */
- char *m_data; /* pointer to malloc'ed data buffer */
- } MemoEdit;
-
- static MemoEdit memo;
- - String GetMemoFile();
-
- extern Boolean FoundCalendarDir; /* whether the Calendar directory exists */
-
- static String memoContents;
-
-
- /*
- * Internal routines
- --- 53,70 ----
- Widget m_display; /* widget of display title area */
- Widget m_text; /* the text area */
- Widget m_today; /* today's data */
- + Widget m_weekly; /* widget of text image of weekly events */
- Cardinal m_size; /* size of the buffer */
- char *m_data; /* pointer to malloc'ed data buffer */
- } MemoEdit;
-
- static MemoEdit memo;
-
- extern Boolean FoundCalendarDir; /* whether the Calendar directory exists */
-
- static String memoContents;
-
- + extern void MemoHelp(); /* look in xcal_help.c */
-
- /*
- * Internal routines
- ***************
- *** 77,83 ****
- static String GetMemoFile();
- static void SaveMemoEdits();
- static void MemoTextChanged();
- - static void MemoHelp();
- static void FinishMemoEditing();
- static void YesCheck();
- static void NoCheck();
- --- 78,83 ----
- ***************
- *** 145,153 ****
- Widget frame;
- Arg args[10];
- Cardinal nargs;
- - Cardinal len;
- String str;
- MonthEntry *me;
- char buf[32];
-
- /*
- --- 145,153 ----
- Widget frame;
- Arg args[10];
- Cardinal nargs;
- String str;
- MonthEntry *me;
- + Dimension charHeight;
- char buf[32];
-
- /*
- ***************
- *** 207,213 ****
- /*
- * The remaining bit here is a date label
- */
- ! PlaceStr(buf, today.day, appResources.mon[today.month], today.year);
- nargs = 0;
- XtSetArg(args[nargs], XtNlabel, buf); nargs++;
- XtSetArg(args[nargs], XtNborderWidth, 0); nargs++;
- --- 207,213 ----
- /*
- * The remaining bit here is a date label
- */
- ! PlaceStr(buf, &today, appResources.memoYearIs2);
- nargs = 0;
- XtSetArg(args[nargs], XtNlabel, buf); nargs++;
- XtSetArg(args[nargs], XtNborderWidth, 0); nargs++;
- ***************
- *** 233,244 ****
-
- XtSetArg(args[0], XtNheight, &height);
- XtGetValues(memo.m_today, args, 1);
- height = height*NewlineCount(str);
- XtSetArg(args[0], XtNheight, height);
- XtSetValues(memo.m_today, args, 1);
- }
- !
- /*
- * Another form with some buttons
- */
- nargs = 0;
- --- 233,294 ----
-
- XtSetArg(args[0], XtNheight, &height);
- XtGetValues(memo.m_today, args, 1);
- + charHeight = height;
- height = height*NewlineCount(str);
- XtSetArg(args[0], XtNheight, height);
- XtSetValues(memo.m_today, args, 1);
- }
- !
- /*
- + * Weekly details - the data for today + an edit button
- + * The header to this is a form
- + */
- + nargs = 0;
- + XtSetArg(args[nargs], XtNshowGrip, False); nargs++;
- + XtSetArg(args[nargs], XtNskipAdjust, True); nargs++;
- + XtSetArg(args[nargs], XtNdefaultDistance, 1); nargs++;
- + frame = XtCreateManagedWidget("weeklyMemo", formWidgetClass, et, args, nargs);
- +
- + /*
- + * Take label "edit" from resources
- + */
- + callbacks[0].callback = DoWeekly;
- + callbacks[0].closure = (caddr_t)&memo;
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, NULL); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- + XtSetArg(args[nargs], XtNright, XtChainLeft); nargs++;
- + lw = XtCreateManagedWidget("weeklyEdit", commandWidgetClass, frame, args, nargs);
- +
- + /*
- + * Say this is a weekly commitment
- + */
- + nargs = 0;
- +
- + XtSetArg(args[nargs], XtNshowGrip, True); nargs++;
- + XtSetArg(args[nargs], XtNborderWidth, 0); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, lw); nargs++;
- + XtSetArg(args[nargs], XtNfromVert, NULL); nargs++;
- + XtSetArg(args[nargs], XtNvertDistance, 2); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- + XtSetArg(args[nargs], XtNright, XtChainRight); nargs++;
- + lw = XtCreateManagedWidget("weeklyTitle", labelWidgetClass, frame, args, nargs);
- +
- + /*
- + * Details for today
- + */
- + nargs = 0;
- + str = GetWeeklyFile(today.wday);
- + if (str == NULL)
- + str = "";
- + XtSetArg(args[nargs], XtNstring, str); nargs++;
- + XtSetArg(args[nargs], XtNdisplayCaret, False); nargs++;
- + XtSetArg(args[nargs], XtNeditType, XawtextRead); nargs++;
- + if (charHeight)
- + XtSetArg(args[nargs], XtNheight, NewlineCount(str)*charHeight); nargs++;
- + memo.m_weekly = XtCreateManagedWidget("display", asciiTextWidgetClass, et, args, nargs);
- + /*
- * Another form with some buttons
- */
- nargs = 0;
- ***************
- *** 342,347 ****
- --- 392,404 ----
- (void) sprintf(buf, "%d %s %d", today.day, appResources.mon[today.month], today.year);
- XtSetArg(args[0], XtNlabel, buf);
- XtSetValues(memo.m_display, args, 1);
- +
- + str = GetWeeklyFile(today.wday);
- + if (str == NULL)
- + str = "";
- + XtSetArg(args[0], XtNstring, str);
- + XtSetValues(memo.m_weekly, args, 1);
- +
- }
-
- /*
- ***************
- *** 441,465 ****
- * First let's see if we have
- * to create the toplevel directory
- */
- ! if (!FoundCalendarDir)
- ! { if (mkdir(MapStem, 0700) == -1)
- ! { XBell(XtDisplay(toplevel), 0);
- ! fprintf(stderr, "xcal: Could not create: %s directory.\n", MapStem);
- ! perror("xcal: mkdir");
- ! fflush(stderr);
- ! return(False);
- ! }
- ! if (chdir(MapStem) < 0)
- ! { XBell(XtDisplay(toplevel), 0);
- ! fprintf(stderr, "xcal: Could not chdir into %s.\n", MapStem);
- ! perror("xcal: chdir");
- ! fflush(stderr);
- ! return(False);
- ! }
- ! FoundCalendarDir = True;
- ! }
-
- fname = appResources.memoFile;
- if ((fd = open(fname, O_WRONLY|O_TRUNC|O_CREAT, 0666)) < 0)
- { XBell(XtDisplay(toplevel), 0);
- fprintf(stderr, "xcal: Could not open %s/%s for writing.\n", MapStem, fname);
- --- 498,508 ----
- * First let's see if we have
- * to create the toplevel directory
- */
- ! if (!NeedTop())
- ! return (False);
-
- fname = appResources.memoFile;
- +
- if ((fd = open(fname, O_WRONLY|O_TRUNC|O_CREAT, 0666)) < 0)
- { XBell(XtDisplay(toplevel), 0);
- fprintf(stderr, "xcal: Could not open %s/%s for writing.\n", MapStem, fname);
- ***************
- *** 487,493 ****
- caddr_t call_data;
- {
-
- ! if (memoContents == NULL || strcmp(memoContents, memo.m_data))
- { MemoCheckExit();
- return;
- }
- --- 530,536 ----
- caddr_t call_data;
- {
-
- ! if (memo.m_savesens == True)
- { MemoCheckExit();
- return;
- }
- *** xcal_popup.c~ Fri Mar 22 23:34:56 1991
- --- xcal_popup.c Fri Mar 22 23:48:24 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_popup.c 3.4 (Hillside Systems) 12/12/90";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_popup.c 3.5 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- ***************
- *** 395,400 ****
- --- 395,413 ----
- static char errmsg[32];
-
- (void) sprintf(errmsg, "Already editing %d %s %d", da->day, appResources.mon[da->month], da->year);
- +
- + DialogPopup(w, NoEdit, errmsg);
- +
- + }
- +
- + void
- + NoDayEditIsPossible(w, day)
- + Widget w;
- + Cardinal day;
- + {
- + static char errmsg[32];
- +
- + (void) sprintf(errmsg, "Already editing %s", appResources.day[day]);
-
- DialogPopup(w, NoEdit, errmsg);
-
- *** xcal_strip.c~ Fri Mar 22 23:34:54 1991
- --- xcal_strip.c Fri Mar 22 23:48:23 1991
- ***************
- *** 1,5 ****
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_strip.c 3.6 (Hillside Systems) 12/7/90";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- --- 1,5 ----
- #ifndef lint
- ! static char *sccsid = "@(#)xcal_strip.c 3.10 (Hillside Systems) 1/16/91";
- static char *copyright = "@(#)Copyright 1989,1990 Peter Collinson, Hillside Systems";
- #endif /* lint */
- /***
- ***************
- *** 45,55 ****
- */
- void MakeMonth();
- void DayBack();
- ! #ifdef LONG_IS_32_BITS
- void YmBack();
- #endif
- void StripQuit();
- !
- void MakeNewMonth();
-
- Cardinal DateSum();
- --- 45,56 ----
- */
- void MakeMonth();
- void DayBack();
- ! #ifndef LONG_IS_32_BITS
- void YmBack();
- #endif
- void StripQuit();
- ! void StripHelp();
- ! void WeeklyHelp();
- void MakeNewMonth();
-
- Cardinal DateSum();
- ***************
- *** 56,63 ****
- Cardinal NumberOfDays();
- Cardinal FirstDay();
- Cardinal JanuaryOne();
- /*
- ! * Start a strip calendar happening
- * a callback of left button
- */
- /* ARGSUSED */
- --- 57,71 ----
- Cardinal NumberOfDays();
- Cardinal FirstDay();
- Cardinal JanuaryOne();
- +
- /*
- ! * Local routines
- ! */
- ! static void CreateActionBar();
- ! static void CreateWeeklyActionBar();
- !
- ! /*
- ! * Start a strip calendar happening
- * a callback of left button
- */
- /* ARGSUSED */
- ***************
- *** 70,75 ****
- --- 78,100 ----
- NewMonthStrip(&today); /* today is global */
- }
-
- + /* ARGSUSED */
- + void
- + DoWeekly(w, closure, call_data)
- + Widget w;
- + caddr_t closure;
- + caddr_t call_data;
- + {
- + Date thisday;
- +
- + thisday.day = 0;
- + thisday.month = 0;
- + thisday.year = 0;
- + thisday.wday = 0;
- + NewMonthStrip(&thisday); /* today is global */
- + }
- +
- +
- /*
- * Start a strip calendar happening
- * a callback of the > or < buttons in another strip
- ***************
- *** 112,125 ****
- Date *td;
- {
- Widget shell, mon, dw, lw, lwi, form;
- ! Arg args[15];
- char nbuf[256];
- char iconName[80];
- MonthEntry *me;
- Instance *ins;
- register int i;
- register Cardinal nargs;
- Cardinal thisDay;
- String dayStr;
- Cardinal numberOfDays;
- Boolean defaultsAreSet = False;
- --- 137,152 ----
- Date *td;
- {
- Widget shell, mon, dw, lw, lwi, form;
- ! Arg args[15];
- char nbuf[256];
- char iconName[80];
- + int type;
- MonthEntry *me;
- Instance *ins;
- register int i;
- register Cardinal nargs;
- Cardinal thisDay;
- + Cardinal startLoop;
- String dayStr;
- Cardinal numberOfDays;
- Boolean defaultsAreSet = False;
- ***************
- *** 129,161 ****
- Dimension labelH, infoH;
- Dimension width;
- Dimension totalWidth;
- - void StripHelp();
-
- ! (void) sprintf(iconName, "%s %d", appResources.smon[td->month], td->year);
- !
- ! XtSetArg(args[0], XtNiconName, iconName);
- ! shell = XtCreatePopupShell(XtNewString(iconName), topLevelShellWidgetClass, toplevel, args, 1);
- !
- ! ins = RegisterMonth(td->year, td->month, shell);
- !
- ! mon = XtCreateManagedWidget(appResources.mon[td->month], panedWidgetClass, shell, NULL, 0);
- !
- ! thisDay = FirstDay(td->month, td->year);
- ! numberOfDays = NumberOfDays(td->month, td->year);
- /*
- ! * Get the map for this year
- */
- ! me = GetMonthEntry(td->year, td->month);
- /*
- - * Title bar is month and date
- - */
- - (void) sprintf(nbuf, "%s %d", appResources.mon[td->month], td->year);
- - /*
- - * see if we will need to worry about marking today's entry
- - */
- - if (appResources.markToday && td->year == today.year && td->month == today.month)
- - markThisMonth = True;
- - /*
- * Find size of title bar
- * by creating the widget and then throwing it away
- */
- --- 156,221 ----
- Dimension labelH, infoH;
- Dimension width;
- Dimension totalWidth;
-
- ! type = (td->day == 0) ? ME_WEEKLY : ME_MONTHLY;
- !
- /*
- ! * There are lots of differences between
- ! * Months and weekly strips here.
- ! * Later tests are done using a switch structure
- */
- ! switch (type)
- ! {
- ! case ME_MONTHLY:
- ! (void) sprintf(iconName, "%s %d", appResources.smon[td->month], td->year);
- ! XtSetArg(args[0], XtNiconName, iconName);
- ! shell = XtCreatePopupShell(XtNewString(iconName), topLevelShellWidgetClass, toplevel, args, 1);
- ! ins = RegisterMonth(td->year, td->month, shell);
- ! mon = XtCreateManagedWidget(appResources.mon[td->month], panedWidgetClass, shell, NULL, 0);
- ! thisDay = FirstDay(td->month, td->year);
- ! numberOfDays = NumberOfDays(td->month, td->year);
- ! startLoop = 1;
- ! /*
- ! * Get the map for this year
- ! */
- ! me = GetMonthEntry(td->year, td->month);
- ! me->me_type = type;
- ! /*
- ! * Title bar is month and date
- ! */
- ! (void) sprintf(nbuf, "%s %d", appResources.mon[td->month], td->year);
- ! /*
- ! * see if we will need to worry about marking today's entry
- ! */
- ! if (appResources.markToday && td->year == today.year && td->month == today.month)
- ! markThisMonth = True;
- ! break;
- ! case ME_WEEKLY:
- ! (void) strcpy(iconName, appResources.weekly);
- ! XtSetArg(args[0], XtNiconName, iconName);
- ! shell = XtCreatePopupShell(XtNewString(iconName), topLevelShellWidgetClass, toplevel, args, 1);
- ! ins = RegisterMonth(0, 0, shell);
- ! mon = XtCreateManagedWidget(iconName, panedWidgetClass, shell, NULL, 0);
- ! thisDay = 0;
- ! numberOfDays = 6; /* test is <= */
- ! startLoop = 0;
- ! /*
- ! * Get the map for this year
- ! */
- ! me = GetWeeklyEntry();
- ! me->me_type = type;
- ! /*
- ! * Title bar is from the resources
- ! */
- ! strcpy(nbuf, iconName);
- ! /*
- ! * see if we will need to worry about marking today's entry
- ! */
- ! if (appResources.markToday)
- ! markThisMonth = True;
- ! break;
- ! }
- /*
- * Find size of title bar
- * by creating the widget and then throwing it away
- */
- ***************
- *** 185,245 ****
- XtSetArg(args[nargs], XtNdefaultDistance, 2); nargs++;
- dw = XtCreateManagedWidget("action", formWidgetClass, mon, args, nargs);
-
- ! /*
- ! * back one month
- ! * label "<" from resources
- ! */
- ! callbacks[0].callback = MakeNewMonth;
- ! callbacks[0].closure = (caddr_t)DateSum(td, -1);
- ! nargs = 0;
- ! XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- ! XtSetArg(args[nargs], XtNfromHoriz, NULL); nargs++;
- ! XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- ! XtSetArg(args[nargs], XtNright, XtChainLeft); nargs++;
- ! lw = XtCreateManagedWidget("back", commandWidgetClass, dw, args, nargs);
- ! ClearCallbacks();
- !
- ! /*
- ! * Quit button
- ! * label "quit" from resources
- ! */
- ! callbacks[0].callback = StripQuit;
- ! callbacks[0].closure = (caddr_t)shell;
- ! nargs = 0;
- ! XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- ! XtSetArg(args[nargs], XtNfromHoriz, lw); nargs++;
- ! XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- ! XtSetArg(args[nargs], XtNright, XtChainRight); nargs++;
- ! lw = XtCreateManagedWidget("quit", commandWidgetClass, dw, args, nargs);
- ! ClearCallbacks();
- !
- ! /*
- ! * On one month
- ! * label ">" from reources
- ! */
- ! callbacks[0].callback = MakeNewMonth;
- ! callbacks[0].closure = (caddr_t)DateSum(td, 1);
- ! nargs = 0;
- ! XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- ! XtSetArg(args[nargs], XtNfromHoriz, lw); nargs++;
- ! XtSetArg(args[nargs], XtNleft, XtChainRight); nargs++;
- ! XtSetArg(args[nargs], XtNright, XtChainRight); nargs++;
- ! lw = XtCreateManagedWidget("next", commandWidgetClass, dw, args, nargs);
- ! ClearCallbacks();
- !
- ! /*
- ! * Help button
- ! * label help from resources
- ! */
- ! if (appResources.giveHelp)
- ! {
- ! callbacks[0].callback = StripHelp;
- ! callbacks[0].closure = (caddr_t)0;
- ! nargs = 0;
- ! XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- ! XtSetArg(args[nargs], XtNshowGrip, False); nargs++;
- ! lw = XtCreateManagedWidget("help", commandWidgetClass, mon, args, nargs);
- ! ClearCallbacks();
- }
-
- #ifdef LONG_IS_32_BITS
- --- 245,258 ----
- XtSetArg(args[nargs], XtNdefaultDistance, 2); nargs++;
- dw = XtCreateManagedWidget("action", formWidgetClass, mon, args, nargs);
-
- ! switch (type)
- ! {
- ! case ME_MONTHLY:
- ! CreateActionBar(shell, dw, mon, td);
- ! break;
- ! case ME_WEEKLY:
- ! CreateWeeklyActionBar(shell, dw);
- ! break;
- }
-
- #ifdef LONG_IS_32_BITS
- ***************
- *** 248,265 ****
- callbacks[0].callback = YmBack;
- callbacks[1].callback = DayBack;
- #endif
- ! for (i = 1; i <= numberOfDays; i++)
- {
- ! dayStr = appResources.day[thisDay];
- ! (void) sprintf(nbuf, "%2d %s", i, dayStr);
- ! thisDay = (thisDay+1)%7;
- !
- #ifdef LONG_IS_32_BITS
- ! callbacks[0].closure = (caddr_t)DatePack(i, td->month, td->year);
- #else
- callbacks[0].closure = (caddr_t)DatePack(td->month, td->year);
- ! callbacks[1].closure = (caddr_t)i;
- #endif
- /*
- * Each line in the strip is
- * form containing
- --- 261,287 ----
- callbacks[0].callback = YmBack;
- callbacks[1].callback = DayBack;
- #endif
- ! for (i = startLoop; i <= numberOfDays; i++)
- {
- ! dayStr = appResources.sday[thisDay];
- ! switch(type)
- ! {
- ! case ME_MONTHLY:
- ! (void) sprintf(nbuf, "%2d %s", i, dayStr);
- ! break;
- ! case ME_WEEKLY:
- ! (void) strcpy(nbuf, dayStr);
- ! break;
- ! }
- #ifdef LONG_IS_32_BITS
- ! callbacks[0].closure = (caddr_t)DatePack(thisDay, i, td->month, td->year);
- #else
- callbacks[0].closure = (caddr_t)DatePack(td->month, td->year);
- ! callbacks[1].closure = (caddr_t)DayPack(thisDay, i);
- #endif
- +
- + thisDay = (thisDay+1)%7;
- +
- /*
- * Each line in the strip is
- * form containing
- ***************
- *** 288,294 ****
- * highlighting we get them after we have created the
- * widget. Then we highlight today.
- */
- ! if (markThisMonth && today.day == i)
- {
- nargs = 0;
- XtSetArg(args[nargs], XtNforeground, &ins->i_col.fg); nargs++;
- --- 310,318 ----
- * highlighting we get them after we have created the
- * widget. Then we highlight today.
- */
- ! if (markThisMonth &&
- ! ((type == ME_MONTHLY && today.day == i) ||
- ! (type == ME_WEEKLY && today.wday == i)))
- {
- nargs = 0;
- XtSetArg(args[nargs], XtNforeground, &ins->i_col.fg); nargs++;
- ***************
- *** 372,377 ****
- --- 396,517 ----
- }
-
- /*
- + * Create action bar for normal monthly strip
- + */
- + static void
- + CreateActionBar(shell, dw, mon, td)
- + Widget shell;
- + Widget dw;
- + Widget mon;
- + Date *td;
- + {
- + Widget lw;
- + register Cardinal nargs;
- + Arg args[8];
- +
- + /*
- + * back one month
- + * label "<" from resources
- + */
- + callbacks[0].callback = MakeNewMonth;
- + callbacks[0].closure = (caddr_t)DateSum(td, -1);
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, NULL); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- + XtSetArg(args[nargs], XtNright, XtChainLeft); nargs++;
- + lw = XtCreateManagedWidget("back", commandWidgetClass, dw, args, nargs);
- + ClearCallbacks();
- +
- + /*
- + * Quit button
- + * label "quit" from resources
- + */
- + callbacks[0].callback = StripQuit;
- + callbacks[0].closure = (caddr_t)shell;
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, lw); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- + XtSetArg(args[nargs], XtNright, XtChainRight); nargs++;
- + lw = XtCreateManagedWidget("quit", commandWidgetClass, dw, args, nargs);
- + ClearCallbacks();
- +
- + /*
- + * On one month
- + * label ">" from reources
- + */
- + callbacks[0].callback = MakeNewMonth;
- + callbacks[0].closure = (caddr_t)DateSum(td, 1);
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, lw); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainRight); nargs++;
- + XtSetArg(args[nargs], XtNright, XtChainRight); nargs++;
- + lw = XtCreateManagedWidget("next", commandWidgetClass, dw, args, nargs);
- + ClearCallbacks();
- +
- + /*
- + * Help button
- + * label help from resources
- + */
- + if (appResources.giveHelp)
- + {
- + callbacks[0].callback = StripHelp;
- + callbacks[0].closure = (caddr_t)0;
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNshowGrip, False); nargs++;
- + lw = XtCreateManagedWidget("help", commandWidgetClass, mon, args, nargs);
- + ClearCallbacks();
- + }
- + }
- +
- + /*
- + * Create action bar for normal monthly strip
- + */
- + static void
- + CreateWeeklyActionBar(shell, dw)
- + Widget shell;
- + Widget dw;
- + {
- + Widget lw;
- + register Cardinal nargs;
- + Arg args[8];
- +
- + /*
- + * Quit button
- + * label "quit" from resources
- + */
- + callbacks[0].callback = StripQuit;
- + callbacks[0].closure = (caddr_t)shell;
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, NULL); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- + XtSetArg(args[nargs], XtNright, appResources.giveHelp ? XtChainLeft: XtChainRight); nargs++;
- + lw = XtCreateManagedWidget("quit", commandWidgetClass, dw, args, nargs);
- + ClearCallbacks();
- +
- + /*
- + * Help button
- + * label help from resources
- + */
- + if (appResources.giveHelp)
- + {
- + callbacks[0].callback = WeeklyHelp;
- + callbacks[0].closure = (caddr_t)0;
- + nargs = 0;
- + XtSetArg(args[nargs], XtNcallback, callbacks); nargs++;
- + XtSetArg(args[nargs], XtNfromHoriz, lw); nargs++;
- + XtSetArg(args[nargs], XtNleft, XtChainLeft); nargs++;
- + XtSetArg(args[nargs], XtNright, XtChainRight); nargs++;
- + lw = XtCreateManagedWidget("help", commandWidgetClass, dw, args, nargs);
- + ClearCallbacks();
- + }
- + }
- +
- + /*
- * Called when the date changes to ensure that
- * the correct day has the appropriate highlights
- */
- ***************
- *** 445,451 ****
- y++;
- }
- #ifdef LONG_IS_32_BITS
- ! return(DatePack(0, m, y));
- #else
- return(DatePack(m, y));
- #endif
- --- 585,591 ----
- y++;
- }
- #ifdef LONG_IS_32_BITS
- ! return(DatePack(0, 0, m, y));
- #else
- return(DatePack(m, y));
- #endif
- ***************
- *** 465,474 ****
- #ifdef LONG_IS_32_BITS
- callb.month = MoUnpack((Cardinal)closure);
- callb.year = YrUnpack((Cardinal)closure);
- - callb.day = DyUnpack((Cardinal)closure);
- - #else
- - callb.day = (Cardinal)closure;
- #endif
- StartEditing(w, &callb);
- }
-
- --- 605,613 ----
- #ifdef LONG_IS_32_BITS
- callb.month = MoUnpack((Cardinal)closure);
- callb.year = YrUnpack((Cardinal)closure);
- #endif
- + callb.day = DyUnpack((Cardinal)closure);
- + callb.wday = WdUnpack((Cardinal)closure);
- StartEditing(w, &callb);
- }
-
-
- --
- Dan Heller
- O'Reilly && Associates Z-Code Software Comp-sources-x:
- Senior Writer President comp-sources.x@uunet.uu.net
- argv@ora.com argv@zipcode.com
-